package com.yulan.BitOpt;

import org.junit.Test;

/**
 * 461. 汉明距离
 */
public class LeetCode_461 {
    /**
     * 输入: x = 1, y = 4
     *
     * 输出: 2
     *
     * 解释:
     * 1   (0 0 0 1)
     * 4   (0 1 0 0)
     *        ↑   ↑
     *
     * 上面的箭头指出了对应二进制位不同的位置。
     */
    public int Lib_hammingDistance(int x, int y) {
        return Integer.bitCount(x^y);
    }

    public int hammingDistance(int x, int y) {
        int xor = x^y;
        int distance = 0;
        while(xor!=0){
            distance += (xor & 1) == 0 ? 0 : 1;
            xor >>= 1;
        }
        return distance;
    }

    @Test
    public void test1(){
        System.out.println(hammingDistance(1,4));
    }
}
